<template>
    <div>
        <h1>当前求和为：{{$store.state.sum}} </h1>
        <h1>当前求和放大十倍为：{{$store.state.sum}} </h1>
        <select v-model.number="num">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
        <button @click="increment">+</button>
        <button @click="decrement">-</button>
        <button @click="incrementOdd">当前求和为奇数再加</button>
        <button @click="incrementWait">等一等再加</button>

        <hr>
    </div>
</template>

<script>
    export default {
        name: 'Count',
        data() {
            return {
                num: 1,// 用户选择的数字
                // sum: 0,// 当前的和，将该sum放到store的state里面。
            }
        }, mounted() {
            console.log('@我想要查看Count组件里面是否有store：', this)
        },
        methods: {
            increment() {
                // this.sum += this.num;
                // 组件调用store身上的dispatch方法
                // this.$store.dispatch('increment', this.num);

                // 如果Vuex的Action里面没有业务逻辑的话，可以跳过Action步骤，直接进入到Mutations步骤
                this.$store.commit('INCREMENT', this.num);
            },
            decrement() {
                // this.sum -= this.num;
                // 组件调用store身上的dispatch方法
                // this.$store.dispatch('decrement', this.num);

                // 如果Vuex的Action里面没有业务逻辑的话，可以跳过Action步骤，直接进入到Mutations步骤
                this.$store.commit('DECREMENT', this.num);
            },
            incrementOdd() {
                // // 如果当前求和sum 取余2 为零的话，说明是偶数就不能执行该逻辑
                // // 其中0转换成布尔值就是false，可以省略写法
                // if (this.num % 2) {
                //     this.sum += this.num;
                // }

                // 组件调用store身上的dispatch方法
                this.$store.dispatch('incrementOdd', this.num);
            },
            incrementWait() {
                setTimeout(() => {
                    // this.sum += this.num;

                    // 组件调用store身上的dispatch方法
                    this.$store.dispatch('incrementWait', this.num);
                }, 500);
            }
        },
    }
</script>

<style scoped>
    button {
        margin-left: 5px;
    }
</style>